﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
namespace Kuvankatselin
{

	/// <summary>
	/// Interaction logic for KuvaLista.xaml
	/// </summary>
	public partial class KuvaLista : UserControl
	{
        public event KuvanSiirtoRuudulleEventHandler KuvanSiirtoRuudulleTapahtuma;

        public Kuva siirettavaKuva;

		public KuvaLista()
		{
			this.InitializeComponent();
            
		}

        private void LisaaKuva(string kuvanNimi)
        {
            Kuva kuva = new Kuva(kuvanNimi);
            kuva.KuvanSiirtoTapahtuma +=new KuvanSiirtoEventHandler(kuva_KuvanSiirtoTapahtuma);
            kuvaAlue.Children.Add(kuva);
        }
        public void LisaaKuva(Kuva kuva)
        {
            kuvaAlue.Children.Add(kuva);
        }

        private void kuva_KuvanSiirtoTapahtuma(object senred, KuvanSiirtoEventArgs e)
        {
            // Tarkistetaan kumpaan suuntaan tapahtuma kulkee
            if (e.suunta == 1)
            {
                Kuva k = e.tapahtuma_kuva;
                // Poistetaan kuva listasta
                kuvaAlue.Children.Remove(k);
                if (KuvanSiirtoRuudulleTapahtuma != null)
                {
                    KuvanSiirtoRuudulleEventArgs tapahtuma = new KuvanSiirtoRuudulleEventArgs(k,e.suunta);
                    KuvanSiirtoRuudulleTapahtuma(new object(), tapahtuma);
                }
            }
        }

        // ladataan kuva kirjastosta ja lisätään kuva listaan
        private void ValisteKuvatPainike_Click(object sender, RoutedEventArgs e)
        {
            // Luodaan dialogi-ikkuna
            System.Windows.Forms.OpenFileDialog valitseKuvatIkkuna = new System.Windows.Forms.OpenFileDialog();
            valitseKuvatIkkuna.Multiselect = true;
            valitseKuvatIkkuna.Title = "Valitse näytettävät kuvat";
            // Lisätään kuvat listaan
            if (valitseKuvatIkkuna.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string[] _tiedostot = valitseKuvatIkkuna.FileNames;
                foreach (string tiedosto in _tiedostot)
                {
                    FileInfo _t = new FileInfo(tiedosto);
                    if (_t.Extension.ToLower() == ".png" || _t.Extension.ToLower() == ".jpg" || _t.Extension.ToLower() == ".jpeg" || _t.Extension.ToLower() == ".bmp" || _t.Extension.ToLower() == ".gif")
                    {
                        LisaaKuva(_t.FullName);
                    }
                }
            }
        }

        private void UserControl_MouseEnter(object sender, MouseEventArgs e)
        {
            Canvas.SetZIndex(this, int.MaxValue);
        }

        private void UserControl_MouseLeave(object sender, MouseEventArgs e)
        {
            Canvas.SetZIndex(this, 0);
        }

	}
    public delegate void KuvanSiirtoRuudulleEventHandler(object o, KuvanSiirtoRuudulleEventArgs e);

    public class KuvanSiirtoRuudulleEventArgs : EventArgs
    {
        public readonly Kuva siirettavaKuva;
        public readonly int suunta;
        public KuvanSiirtoRuudulleEventArgs(Kuva kuva, int _suunta)
        {
            siirettavaKuva = kuva;
            suunta = _suunta;
        }
    }

}